package br.com.sadim.paciente;

import java.io.Serializable;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;


import br.com.sadim.hospital.Consulta;


@Entity
@Table (name="paciente")
public class Paciente implements Serializable{
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private Integer	idPaciente;

	@Column (name="nome")
	private String nome;

	@Column (name="rg")
	private String rg;

	@Column (name="cpf")
	private String cpf;
	
	@Column (name="telefone")
	private String telefone;

	@Temporal(TemporalType.TIMESTAMP)   
	@Column(name="dataNascimento")
	private Date dataNascimento;

	@Column(name="sexo")
	private SexoPaciente sexo;
	
	@Column(name="status")
	private boolean status;

	@OneToMany
	@JoinColumn(name = "idPaciente")
	private List<Consulta> consulta;
	
	@Lob
    @Column(name="FOTO", nullable=false, columnDefinition="mediumblob")
    private byte[] foto;

	public Integer getIdPaciente() {
		return idPaciente;
	}

	public void setIdPaciente(Integer idPaciente) {
		this.idPaciente = idPaciente;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getRg() {
		return rg;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getCpf() {
		return cpf;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}
	
	public String getDataString() {
		if(dataNascimento==null)
			return null;
		return dataNascimento.toString();
	}

	public static Date formataData(String data) {   
		if (data == null || data.equals(""))  
			return null;  

		Date date = null;  
		try {  
			DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");  
			date = (java.util.Date)formatter.parse(data);  
		} catch (ParseException e) {              
			e.printStackTrace();
		}  
		return date;  
	}  

	public void setDataString(String dataNascimento) {
		this.dataNascimento = formataData(dataNascimento);
	}
	
	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public SexoPaciente getSexo() {
		return sexo;
	}

	public void setSexo(SexoPaciente sexo) {
		this.sexo = sexo;
	}

	public List<Consulta> getConsulta() {
		return consulta;
	}

	public void setConsulta(List<Consulta> consulta) {
		this.consulta = consulta;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public byte[] getFoto() {
		return foto;
	}

	public void setFoto(byte[] foto) {
		this.foto = foto;
	}

	public boolean isStatus() {
		return status;
	}

	public void setStatus(boolean status) {
		this.status = status;
	}


}
